iT邦幫忙

2023 iThome 鐵人賽

DAY 5
1
Cloud Native

【하나, 둘, ready, get set, go】系列 第 5

【하나, 둘, ready, get set, go】Day 5 - if else、switch case

  • 分享至 

  • xImage
  •  

前情提要

前一天介紹了 Go 的資料型別、變數/常數宣告以及別名用法

今天要來介紹的是 Go 的 if else 和 switch case

if else

Go 的 if else 語法跟常見的程式語言基本相同,如下

if 條件 {
  
}

// Example:
if x > 0 {
  // x > 0 要做的事
}
if 條件 {
  
} else {
  
}

// Example:
if x > 0 {
  // x > 0 要做的事
} else {
  // x < 0 要做的事
}
if 條件一 {
  
} else if 條件二 {
  
} else {
  
}

// Example:
if x > 0 {
  // x > 0 要做的事
} else if x == 0 {
  // x = 0 要做的事
} else {
  // x < 0 要做的事
}

除了上面這種常見的寫法外,還有另外一種搭配取值的寫法,像是下面這樣

package main

import (
  "fmt"
  "math"
)

func main() {
  fmt.Println(pow(4, 2, 10))
}

func pow(x, n, lim float64) float64 {
  if v := math.Pow(x, n); v < lim {
    return v
  } else {
    fmt.Printf("%g >= %g\n", v, lim)
  }
  return lim
}

在 13 行的 if 前段,先宣告變數 v 來取得 math.Pow(x, n) 的值
接著透過 ; 區隔開,接著後段在宣告判斷條件 v < lim

這種 if 寫法在開發上也是很常見的,而這裡的變數 v 只作用在這個 if 判斷內 (13~17 行)

switch case

Go 的 switch case 語法分為兩種,一種是 switch 後面帶變數的,一種是不帶變數的

// 帶變數的
switch 變數 {
case 條件一:
  // 條件一成立後要做的事
case 條件二:
  // 條件二成立後要做的事
case 條件三:
  // 條件三成立後要做的事
}

// 帶變數的 Example:
x := 5
switch x {
case 0:
  fmt.Println("0")
case 1:
  fmt.Println("1")
case 5:
  fmt.Println("5")
}
// 不帶變數的
switch {
case 條件一:
  // 條件一成立後要做的事
case 條件二:
  // 條件二成立後要做的事
case 條件三:
  // 條件三成立後要做的事
}

// 不帶變數的 Example:
x := 5
switch {
case x > 0:
  fmt.Printf("x > 0,%d\n", x)
case x == 0:
  fmt.Printf("x = 0,%d\n", x)
case x < 0:
  fmt.Printf("x < 0,%d\n", x)
}

如果想要寫 default 的話,也可以在 case 的最後面,多新增一個 default 選項

// 帶變數的
switch 變數 {
case 條件一:
  // 條件一成立後要做的事
case 條件二:
  // 條件二成立後要做的事
case 條件三:
  // 條件三成立後要做的事
default:
  // 上述條件都不符合時要做的事
}

// 不帶變數的
switch {
case 條件一:
  // 條件一成立後要做的事
case 條件二:
  // 條件二成立後要做的事
case 條件三:
  // 條件三成立後要做的事
default:
  // 上述條件都不符合時要做的事
}

如果想要執行完 case A 後,接續執行下一個 case 的話
可以在 case A 內新增 fallthrough
像是下面這樣

宣告變數 x 等於 5,做 switch case,會進 case x > 0,執行完後
會再接著執行 case x == 0 裡的程式

x := 5
switch {
case x > 0:
  fmt.Printf("x > 0,%d\n", x)
  fallthrough
case x == 0:
  fmt.Printf("x = 0,%d\n", x)
case x < 0:
  fmt.Printf("x < 0,%d\n", x)
}

總結

今天簡單介紹了 Go 的 if else、switch case 用法

下一篇會來介紹 for 的用法

明天見~


上一篇
【하나, 둘, ready, get set, go】Day 4 - 型別、宣告、別名
下一篇
【하나, 둘, ready, get set, go】Day 6 - for 迴圈
系列文
【하나, 둘, ready, get set, go】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言